Encoder Eccentricity Correction for Motion Control Systems

ABSTRACT

Correction of rotary encoder eccentricity in an image forming device having a motor controller using period and position pulse train feedback signals. A motor includes an encoder disc rotating with the motor and at least two encoder sensors disposed at different circumferential positions about the encoder disc. A controller may use a high speed clock to calculate a corrected speed count based on speed counts determined from the number of clock cycles that elapse per cycle of pulse trains from the encoders. The controller may also calculate a corrected position count based at least partly on one or more position counts determined from the number of clock cycles that elapse between periodic sampling points and transitions of encoder pulse trains. The corrected position count may also be calculated based on a position count and one or more speed counts.

BACKGROUND

The present invention relates generally to the field of motor controland specifically to improvement of speed and position or phase control.More specifically, the present invention relates to the correction ofencoder eccentricities in motion control systems using encoder feedbackto control motor speed and position.

Precise motor speed control is a requirement of a broad array ofmotor-driven applications. Mirror motors in laser print heads, diskdrives, and CD-ROM drives are examples of devices requiring precisemotor speed control. Another example where speed control is critical isa motor driving print media through an electrophotographic (EP)printer—in particular, a color EP printer—and/or driving the PC drum(s)of such a printer. Feature placement on the PC drum(s), and on the printmedia as it is transported past the drum(s), is directly influenced bythe speed of the driving motor. Any perturbations in the speed of thedrive motor may be manifested as image errors, such as banding ormisregistration of dots on the print media. These errors areparticularly noticeable in color EP printers, where different colors oftoner are deposited in layers on the print media. To avoid these errors,dot placement must be tightly controlled. DC motors, and in particular,brushless DC motors are typically used in such applications. Thesemotors are well suited to the speed and position control method of thepresent invention, although the invention is not so limited, and isapplicable to AC motors as well.

Traditional motor speed control is accomplished with a Phase-Lock Loop(PLL) controller. Application of PLL controllers to motor controlsystems typically comprises generating a periodic signal representativeof motor speed—such as from an encoder or frequency generator—andcomparing the signal to a reference signal of a desired frequency. ThePLL controller attempts to match the phase, and hence frequency, of thetwo signals. Based on the phase error signal from the PLL controller,the voltage to the motor is increased or decreased to increase or retardits speed, so as to match the reference signal.

PLL controllers are effective in many applications, but have somelimitations, particularly when motor systems are subjected to varyingloads and varying speeds. Unlike oscillating electrical signals, motorsand the objects they displace are inertial bodies and do not respondinstantaneously to changes in commanded signals. Because of this,PLL-based motor controllers, while adequate for the speed control ofmotor systems that are characterized by a constant and predictable load,do not compensate well for fluctuations in mechanical load, such ascommonly found in EP printers. Torque fluctuations in EP printers mayarise due to paper picking, nip shock, toner stirring, and a variety ofother causes.

Additionally, traditional PLL controllers are constructed using analogcircuits, which include many non-linear components. Furthermore, mostPLL controllers are “tuned” for a specific range of frequencies, outsideof which the control seriously degrades. Even within the designedfrequency range, however, due to the control of both frequency andphase, with PLL controllers it is important to know which error—phase orfrequency—dominates, as controlling to the wrong error may cause themotor speed to lock onto harmonics of a commanded speed rather than theactual commanded speed.

Other motor controllers incorporate digital solutions, such as a digitalPID controller, which permits implementation in ASICs or DSPs, tocontrol the speed and position of a motor shaft subjected to varyingspeeds and loads. Some versions of the digital motor controllers utilizean encoder, tachometer, or other periodic signal generator from whichmotion feedback quantities are generated. Two exemplary motion feedbackquantities include a speed count and a position count, each of which maybe generated from the encoder signal. The speed count is typicallydetermined as the number of high frequency clock cycles that elapse perencoder cycle. Thus, the speed count provides an indication of the timethat elapses during one encoder period with larger speed countsreflecting lower motor speeds and vice-versa. By comparison, theposition count provides an indication of a phase shift in the encodersignal and may be determined as the number of high frequency clockcycles that elapse between a periodic command pulse and a subsequentrising or falling edge of an encoder cycle. Stated another way, theposition count provides an indication of the phase of the encoder signalrelative to a predetermined reference. Motion feedback quantities suchas these two counts are independently determined and fed back to thedigital motor controller, which adjusts the motor speed, typically byadjusting the duty cycle of a pulse-width-modulated drive signal, tocorrect any speed and position errors indicated by the motion feedbackquantities. One example of a motor controller using this type of speedand position correction is disclosed in commonly assigned U.S. patentapplication Ser. No. 10/378,430, filed Mar. 3, 2003, which is herebyincorporated by reference herein, in its entirety.

Incremental optical encoders used to generate these motion feedbackquantities provide a series of periodic signals set off by mechanicalmotion. The number of successive periods corresponds to resolvablemechanical increments of motion. In the case of rotary encoders, whichare typically coupled to a rotating motor or drivetrain shaft, eachcycle of the periodic signal produced by the encoder corresponds to someangular displacement of an encoder wheel. The encoder signal providesalternating logic states of “0” and “1” for each successive cycle ofresolution. Rotary optical encoders achieve angular counting through alight emitter-receiver pair where light either passes though spacedapart apertures in the encoder wheel or reflects off spaced apartreflective segments on the encoder wheel. Where rotating encoders areused to generate these discrete motion feedback quantities, encodereccentricity may result if the optical center of the encoder wheel isnot aligned with the center of rotation of the shaft on which theencoder wheel is mounted. This eccentricity may produce apparent speedand/or position errors that are interpreted by the motor controller asactual errors. Consequently, the motor controller will try to compensatefor these apparent errors by changing the speed of the motor, even whereno changes are actually required.

SUMMARY

Embodiments of the present invention are related to a method andapparatus for correcting encoder eccentricity in an image forming devicethat uses encoder feedback signals to generate speed and position countsto control the speed and motor shaft position of a rotary motor. Themotor may be used to drive a document transport roller or some otherimaging unit component such as a photoconductive drum in the imagingdevice. The motor may have an encoder disc coupled thereto (directly orto a gear train shaft) so that the encoder disc rotates in conjunctionwith the motor. A first encoder sensor is positioned at a firstcircumferential location about the encoder disc. A second encoder sensoris positioned at a second, different circumferential location about theencoder disc. The first encoder sensor and the second encoder sensor maybe located substantially 180 encoder disc degrees apart from oneanother. Each encoder sensor generates a pulse train indicative of thespeed of the motor. A controller may use a high speed clock to calculatea corrected speed count from an average of a number of clock cycles thatelapse per cycle of the pulse trains from the first and second sensors.

The controller may also generate periodic sampling points and calculatea corrected position count from a number of clock cycles that elapsebetween a sampling point and a transition of the pulse train from thefirst encoder sensor. In one embodiment, the controller may generate asecond set of sampling points and calculate the corrected position countas an average of position counts for each encoder sensor determined asthe number of clock cycles that elapse between a sampling point and atransition of the pulse train for the respective encoder sensors. In oneembodiment, a corrected position count may be determined from one ormore speed counts and/or a corrected speed count. In one embodiment, athird encoder sensor may be positioned at a third circumferentiallocation about the encoder disc. The third encoder sensor may bepositioned so that the phase of a speed count determined from this thirdencoder sensor is substantially the same as the phase of a positioncount determined from one of the other encoder sensors. The controllermay calculate the corrected position count based on a number of clockcycles that elapse per cycle of the first, second, and third pulsetrains.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a schematic illustration of a motor control circuit accordingto one embodiment of the present invention;

FIG. 2 is a schematic illustration of a rotary encoder with multipleencoder sensors disposed about the encoder wheel according to oneembodiment of the present invention;

FIG. 3 is a timing diagram showing multiple encoder pulse trains and ahigh speed clock signal according to one embodiment of the presentinvention;

FIG. 4 is a timing diagram showing multiple encoder pulse trains and acommand signal according to one embodiment of the present invention;

FIG. 5 is a signal diagram showing speed counts and a corrected speedcount for an eccentric encoder according to one embodiment of thepresent invention;

FIG. 6 is a signal plot diagram showing the phase relation betweenmultiple speed counts and a position count for an eccentric encoderaccording to one embodiment of the present invention;

FIG. 7 is a signal plot diagram showing a speed count, a position count,and a corrected position count for an eccentric encoder according to oneembodiment of the present invention;

FIG. 8 is a timing diagram showing multiple encoder pulse trains andmultiple command signals according to one embodiment of the presentinvention;

FIGS. 9A and 9B are signal plot diagrams respectively showinguncorrected and corrected position variation for an eccentric encoderaccording to one embodiment of the present invention; and

FIGS. 10A and 10B are signal plot diagrams respectively showinguncorrected and corrected position variation for an eccentric encoderaccording to one embodiment of the present invention.

DETAILED DESCRIPTION

Embodiments of the present invention are directed to the correction ofmotor eccentricity in systems using encoder feedback to control motorspeed and motor shaft position. FIG. 1 depicts a high-levelrepresentation of an exemplary motor control system, designatedgenerally by the number 10, in which embodiments of the presentinvention may be implemented. The motor control system 10 includes amotor controller 12 that generates a Pulse Width Modulated (PWM) motordrive signal 14. A power driver 16 converts the PWM data to powersignals 18 that are applied to the motor 20, as is well known in theart. Operatively coupled to the motor 20 is a rotary position encoder21, which comprises an encoder wheel 22 that rotates in conjunction withthe motor 20. In one embodiment, the encoder wheel 22 is coupled to arotating shaft of motor 20. Alternatively, the encoder wheel 22 may beindirectly coupled to the motor 20, such as on a gear shaft or otherdrive train shaft (not shown), so that the encoder wheel 22 rotates inconjunction with the motor 20. In one embodiment, the encoder wheel 22may be mounted to rotate in conjunction with a photoconductive unit inan image forming device. Thus, since it is not expressly required thatthe encoder wheel 22 to be mounted directly to a motor 20, the motor 20may be a rotary or linear motor. Other motion inducing actuators mayalso be used in lieu of a motor 20.

The encoder wheel 22 may be an optical encoder having spaced apartapertures or spaced apart reflective segments 46 that are detectable byone or more encoder sensors 23 that are disposed about the circumferenceof the encoder wheel 22. For example, in the embodiment shown in FIG. 2,three encoder sensors 23 a, 23 b, 23 c may be positioned about thecircumference of the encoder wheel 22. More or fewer encoders may beused as appropriate. For example, embodiments described below usedifferent numbers of encoders 23. Referring still to FIG. 1, encodersensors 23 generate an encoder signal 24 comprising a pulse train thatprovides alternating logic states of “0” and “1” for each successivecycle of encoder wheel 22 resolution. That is, each cycle of theperiodic signal 24 produced by the encoder sensor 23 corresponds to someangular displacement of an encoder wheel 22. In one embodiment, anencoder wheel 22 having 720 encoder lines per revolution may be used.

Accordingly, the encoder sensor 23 generates a pulse train 24 indicativeof the speed and incremental position of the motor 20. The pulse trainoutput 24 is used by the controller 12 to calculate speed and positionerrors of the motor 20 shaft as compared to a desired shaft motion. Ahigh frequency clock 26 generates a high frequency, periodic clocksignal 28 that is supplied to the motor controller 12. The speed andposition of the motor 20 are determined from the pulse train 24 by useof the clock signal 28. As a functional lower limit on the frequency ofthe clock signal 28, it must satisfy the Nyquist criteria, i.e., that itis at least twice the frequency of the highest frequency component ofthe pulse train 24. The clock signal 28 is preferably an order ofmagnitude or more faster than the pulse train 24, and is most preferablyseveral orders of magnitude faster. For example, in one embodiment, theclock signal 28 has a frequency of about 16 MHz, and the pulse train 24has a frequency of about 1 KHz. However, it should be understood thatthe frequency of the pulse train 24 varies according to motor speed.

The exemplary motor controller 12 comprises a position counter 30, aspeed counter 34, a position controller 38, and a speed controller 40.While these components are shown as separate entities, it should beunderstood that FIG. 1 is a functional representation; in a givenimplementation, the motor controller 12, the high frequency clock 26,the counters 30, 34, the controllers 38, 40, and possibly the powerdriver 16 may be combined, such as in an ASIC, FPGA, DSP, or the like,as is well known in the art. Accordingly, signals 23, 36, and 56 may bemore appropriately represented as discrete quantities that arecontinually updated. Those skilled in the art will comprehend thechanges that are warranted for specific hardware or softwareapplications.

The exemplary motor controller 12 establishes a dominant control loop(the course control loop) via speed controller 40 to effect speedcontrol. The purpose of the speed control loop is to ensure that thespeed of the motor 20 is correct. The motor controller 12 additionallyimplements a secondary control loop (the fine control loop) via positioncontroller 38 to effect position control. The purpose of the positionadjustment loop is to remove position errors, which manifest themselvesas misalignments of the motor 20 shaft. The position adjustment loopremoves position errors by commanding small motor speed adjustments inthe speed control loop. In one embodiment, both the speed control loopand the position adjustment loop include a Proportional, Integral,Derivative (PID) controller, which are well known in the control systemarts. The exemplary embodiment of the motor 20 and motor controller 12may be used in an image forming device, such as a color printer, wherethe motor 20 drives an object, such as print media or a photoconductivedrum, at a constant speed. The motor controller 12 manages speed andposition errors, which, if uncorrected, may result in erroneousoperation, such as, for example, the misregistration of color pixels onthe print media or banding effects.

The speed counter 34 determines the speed of the motor 20 by countingthe number of cycles of the clock signal 28 that occur per cycle of thepulse train 24. For example, the speed counter 34 may count the numberof cycles, or “ticks,” of the clock signal 28 that elapse betweentransitions of the pulse train 24. FIG. 3 graphically depicts this pulsecounting technique for three separate pulse trains 24 a, 24 b, 24 c,which may be generated by the encoder sensors 23 a, 23 b, 23 c shown inFIG. 2. Using one cycle of each pulse train 24 a, 24 b, 24 c, andsampling on the rising edges, the number of cycles, or ticks, of theclock signal 28 are counted to produce respective speed counts T1, T2,T3. Considering for the moment a single encoder system as shown in FIG.1, a sequence of speed count values T1 may be transmitted as a speedcount signal 36 to speed controller 40, and by comparison to apredetermined desired number of ticks per cycle, the PWM data 14 outputby the motor controller 12 may be adjusted to advance or retard thespeed of the motor 20, as required to bring the two counts intoagreement.

In one embodiment, the speed counter 34 may count the number of clockcycles that elapse between adjacent rising edges of the pulse train 24.In one embodiment, the speed counter 34 may count the number of clockcycles that elapse between adjacent falling edges of the pulse train 24.Other possibilities may be used, including, for example, countingbetween multiple cycles or between rising and falling edges of the pulsetrain 24.

The speed count signal 36 provides an indication of the rotor speed ofthe motor 20. That is, the more clock signal 28 ticks that are countedduring one cycle of the pulse train 24, the slower the motor is turning.Conversely, the fewer clock signal 28 ticks that are counted per cycleof the pulse train 24, the faster the motor 20 is turning. By comparingthe actual number of clock signal 28 ticks counted during a cycle of thepulse train 24 to a predetermined, desired number to be counted, a speederror may be computed. In other words, the rising edges of the pulsetrain 24 may be used as a sampling signal, indicating when the speedcounter 34 is to sample and count elapsed cycles of the clock signal 28.As the frequency of the clock signal 28 is known and highly precise, thespeed of the motor 20 may be determined.

The exemplary motor controller 12 further controls the position of themotor 20. Speed is controlled by ensuring that the pulse train 24 cyclesat a constant, predetermined rate. Position is controlled by forcing thepulses to transition at specific, predetermined points in time. Theposition counter 30, under the control of the motor controller 12,generates a command position signal 31 that comprising a series ofprecisely, temporally-spaced impulses, or sampling points 33 as shown inFIG. 4. The command position signal 31 is shown as a series of pulses33, but may also comprise a binary signal or other sampling pointsignal, with sample points coinciding with rising, falling oralternating edges. FIG. 4 graphically depicts this position countingtechnique for three separate pulse trains 24 a, 24 b, 24 c, which may begenerated by the encoder sensors 23 a, 23 b, 23 c shown in FIG. 2. Eachtime the sampling pulse 33 triggers, the position counter 30 counts thenumber of cycles, or ticks, of the clock signal 28 that occur betweenthe sample point and the next rising edge of the pulse trains 24 a, 24b, 24 c. Alternatively, the count may be determined between the samplepoint and the next falling edge of the pulse trains 24 a, 24 b, 24 c.For either case, a position count Φ1, Φ2, Φ3 may be generated for eachpulse train 24 a, 24 b, 24 c. Considering again the single encoderexample shown in FIG. 1, a position controller 38 compares the positioncount Φ1, transmitted as a position count signal 32, to a predeterminedvalue, and directs the speed controller 40 to adjust the speed of themotor 20 as needed. The speed adjustments attempt to force the positioncount Φ1 and the predetermined value to coincide from sample to sample,thus ensuring a constant position. Note that the speed controller 40adjusts the speed of motor 20 based on speed count T1 and position countΦ1 information.

Referring to FIG. 2, the various embodiments disclosed below usemultiple encoder sensors, such as sensors 23 a, 23 b, 23 c, disposedabout an encoder wheel 22 to correct errors induced by eccentricity. Itis usually the case that there is some amount of eccentricity betweenthe encoder disc 22 and the motor 20. The sensors 23 a, 23 b, 23 c maybe aligned with the motor 20 or encoder disc 22. In the example shown inFIG. 2, the sensors 23 a, 23 b, 23 c are aligned with a shaft of motor20, the axis of which represents the center of rotation 44. However, theencoder disc 22 and/or the sensed features 46 on the encoder disc 22 arenot perfectly centered about the center of rotation 44. In FIG. 2, thiseccentricity is shown as dimension e, which represents the offsetbetween the rotational center 44 of motor 20 (e.g., axis of motor shaft,motor rotor, or other rotating component) and the optical center 42 ofthe encoder disc 22. A result of this eccentricity is that, even at aconstant motor speed, the individual encoder segments 46 (e.g.,reflective lines or apertures) follow different rotational paths aboutthe center of rotation 44. The encoder disc 22 may also whirl about thecenter of rotation 44. This effect is shown by the dashed representationof the encoder disc 22, which shows the position of the disc 22 when themotor 20 and disc 22 have rotated approximately 180 degrees from thesolid representation. In this dashed representation, the optical center42 has traveled around the center of rotation 44 to a new position 43.Meanwhile, to the fixed encoder sensors 23 a, 23 b, 23 c, it appearsthat the encoder disc 22 and motor 20 are speeding up and slowing downthrough each revolution of the encoder disc 22. This “apparent” changein velocity occurs because the instantaneous radius from the rotationcenter 44 to the encoder segments 46 continually changes even though theactual radius r from the optical center to the encoder lines isconstant.

With an eccentric encoder, the speed counts T1, T2, and T3 (generated asshown in FIG. 3 from pulse trains 24 a, 24 b, and 24 c, respectively)appear to get shorter and longer through each revolution of the encoderdisc 22. FIG. 5 shows the relationship of speed counts T1 and T3 over anentire revolution of the encoder disc 22 rotating at a constantvelocity. The speed counts T1, T3 (T2 as well, though not shown in FIG.5) are sinusoidal, and have the same DC offset, frequency, andamplitude, but differ in phase due to the difference in sensor positionabout the encoder disc 22. Speed counts T1 and T3 may correspond toencoder sensors 23 a and 23 c, which are disposed approximately 180motor shaft degrees apart from each other. Thus, the speed count signalsT1 and T3 shown in FIG. 5 are 180 degrees out of phase with respect toeach other. In other words, when encoder sensor 23 a senses longerperiods (higher T1, slower speed), encoder sensor 23 c senses shorterperiods (lower T3, faster speed). Motor controller 12 may compensate forthese differences by averaging the two speed counts T1, T3 to generate acorrected speed count TC. With regards to FIG. 2, the corrected speedcount TC may be transmitted as a speed count signal 36 to speedcontroller 40 to control the speed of motor 20.

As is the case with speed counts, the position counts Φ1, Φ2, Φ3 shownin FIG. 4 are also adversely affected by motor eccentricity. In fact,the position counts Φ1, Φ2, Φ3 undergo the same cyclical rising andfalling that may be incorrectly interpreted by position controller 38 asapparent position changes. FIG. 6 shows a curve of position count Φ1overlaid on the same graphical plot as speed counts T1, T2, and T3 overan entire revolution of the encoder disc 22 rotating at a constantvelocity. Position count Φ1 and speed count T1 may be determined frompulse train 24 a generated by encoder sensor 23 a (see FIG. 2). Speedcounts T2 and T3 may be determined from pulse trains 24 b, 24 cgenerated by encoder sensors 23 b, 23 c, respectively.

The vertical axis on the left side of FIG. 6 represents speed countvalues while the vertical axis on the right side of FIG. 6 representsposition count values. The position count Φ1 signal has the samefrequency as the speed count signals T1, T2, and T3. This is to beexpected since the frequency is a function of motor speed and eachencoder 23 a, 23 b, and 23 c experiences the same eccentricity effects,albeit at different times. Note that the amplitude of these signals is afunction of the encoder eccentricity. The position count Φ1 has a value(DC offset) that is smaller than speed count T1. This is because theposition count Φ1 represents a timer count taken between a command pulse33 (that fires somewhere within one pulse train 24 a period) and thenext rising edge of the pulse train 24 a. At the upper limit, a commandpulse 33 may coincide with a rising edge of the pulse train 24 a, atwhich point the position count Φ1 and the speed count T1 willsubstantially match. However, the position count Φ1 will generally havesome value that is less than or equal to the speed count T1 since someportion of one period of the pulse train 24 a is counted. In fact, it isgenerally desirable for the command pulse 33 to fire approximately halfway through one full pulse train 24 a period so that Φ1 is approximatelyhalf of T1. This provides a maximum operating window for the positioncontroller. The procedure for getting the command pulses 33 to fire ator near half the pulse train 24 a period is described in greater detailbelow.

The corrected speed count TC discussed above was determined as aninstantaneous average of the most recent values for the speed counts T1and T3 derived from the two pulse trains 24 a, 24 c from encoders 23 a,23 c, respectively. The same averaging solution is not practicallyfeasible to correct eccentricity for position counts Φ1, Φ2, Φ3,particularly where only one command signal 31 is used. This averagingsolution is not ideal because the command signal 31 is associated withone pulse train, for example 24 a, and therefore the position counts Φ2,Φ3 generated from the other two pulse trains 24 b, 24 c are not entirelyreliable. In the embodiment shown in FIG. 4, the timing of the commandpulses 33 is established relative to the pulse train 24 a. It wasmentioned above that it is desirable for the command pulses 33 to fireapproximately halfway through one period of the pulse train 24 a. Thiscan be established once a motor is rotating at a constant, steady-statespeed. An interrupt is generated within the motor controller 12 toinitialize all system variables and position counts Φ1, Φ2, Φ3 and loadan initialization count equal to half the desired period (indicated by½TCMD) into the position counter 30. This initialization count may bebased on T1, TC, or preferably, half the desired period based on adesired motor speed. Then, at the next rising edge (indicated by startpulse 48 in command signal 31) of pulse train 24 a, the position counter30 counts down from or up to the initialization count. Once half thedesired initialization count ½TCMD elapses, the position counter 30begins generating the periodic pulses 33, each separated in time by afull command period TCMD, the value of which may be based on apredetermined value based on desired motor speed. Note that, if theencoder pulse trains 24 a, 24 b, 24 c have a 50% duty cycle (i.e., theyare at binary 1 for half a period and binary 0 for half a period), thecommand pulses 33 may simply be started, at least for initializationpurposes, on a falling edge of the corresponding pulse train 24 a, 24 b,24 c without having to implement the half-period counting initializationprocedure.

The position counts Φ2, Φ3 generated from pulse trains 24 b and 24 c arenot completely reliable for at least two reasons. First, thecircumferential position of the encoders 23 b, 23 c may induce errors inthe position counts Φ2, Φ3 that are not wholly attributable toeccentricity or motor shaft position changes. The mounting position ofthe encoders 23 b, 23 c relative to the encoder segments and relative toencoder 23 a affect the phase of the pulse trains 24 b, 24 c,respectively. Thus, as shown in FIG. 4, the values for the positioncounts Φ1, Φ2, and Φ3 may be widely different such that averaging theseposition counts Φ1, Φ2, Φ3 will generally not produce a truly correctedresult.

Second, it may also be the case that encoder eccentricity will cause therising edge of pulse trains 24 b, 24 c to toggle between leading andlagging the command pulses 33. For instance, FIG. 4 shows a relativelylarge position count Φ2, measured between a command pulse 33 and risingedge 50 in pulse train 24 b. However, encoder eccentricity may cause thepulse train 24 b periods to increase, thereby causing rising edge 52 toshift to the right (lagging) of the command pulse 33. Consequently, theposition count (12 would suddenly jump from a large value to a smallvalue. In fact, the position count Φ2 would jump back and forth once permotor revolution. The same situation may occur with position count Φ3,where rising edge 54 moves to the left (leading) of the command pulse33. Consequently, the position count Φ3 would suddenly jump from a smallvalue to a large value.

Therefore, two approaches are provided herein for establishing acorrected position count that minimizes or eliminates errors caused byan eccentric encoder. The approaches disclosed herein have been shown toprovide corrected values for speed and position counts that approach theaccuracy of inductive frequency generators. In a first approach, aninstantaneous position count error ΦError may be derived from a speedcount error TError using the following equation:

$\begin{matrix}{\frac{\Phi {Error}}{TError} = {\frac{N}{2\pi}\left\lbrack {1 - \left( \frac{e}{r} \right)^{2}} \right\rbrack}} & \left( {{Eq}.\mspace{14mu} 1} \right)\end{matrix}$

where N is the number of encoder segments 46 per motor shaft revolution,e is the encoder eccentricity, and r is the optical radius (see FIG. 2).Equation 1 allows one to determine an instantaneous position count errorΦError if the period error TError is known. As discussed above, acorrected speed count TC can be determined by averaging speed counts T1,T3 derived from encoders 23 a, 23 c that are positioned at substantiallyopposite sides of the encoder wheel 22. Thus, at any given moment, theperiod error TError between the corrected speed count TC and any one ofthe individual speed counts T1, T2, T3 is known. For example, theinstantaneous period error TError between the corrected speed count TCand speed count T2 is given by:

TError=T2−TC  (Eq. 2)

As a practical matter, the values for N and r in Equation 1 are knownquantities based on the specifications of the encoder wheel 22. However,the eccentricity e is an unknown quantity that is corrected by theembodiments disclosed herein. In general, the eccentricity e is small inrelation to the radius r. Thus, an approximation of Equation 1 isprovided by

$\begin{matrix}{\frac{\Phi {Error}}{TError} = \frac{N}{2\pi}} & \left( {{Eq}.\mspace{14mu} 3} \right)\end{matrix}$

Equations 1 and 3 are expressed as an error ratio between position andperiod. Thus, Equations 1 and 3 may be applied to a speed count signalT1, T2, T3 and a position count signal Φ1, Φ2, Φ3 that are phasealigned. The speed count T1 and position count Φ1 may be phase aligned.However, a more general application of the present embodiment is betterillustrated using the exemplary count signals shown in FIG. 6, wherespeed count T1 and position count Φ1 are not phase aligned. This phasemisalignment may occur because of a phase delay induced by certaincounting devices, such as integrators. Those skilled in the artcomprehend that integrators induce a 90 degree phase delay, which maycause the position count Φ1 to lag the speed count T1, even though bothare derived from the same encoder. Other phase shifts may occurdepending on the components used in a particular application. Thepresent embodiment illustrates a technique to accounting for these phaseshifts.

FIG. 6 shows that the exemplary position count curve Φ1 is phase alignedwith speed count T2, which is derived from pulse train 24 b generated byencoder sensor 23 b. Thus, speed count T2 may be used as a referencespeed count to determine the position error ΦError and the correctedposition count ΦC. Accordingly, in the present embodiment (illustratedin FIG. 2), the encoder 21 uses three encoder sensors 23 a, 23 b, 23 cdisposed approximately 90 motor shaft degrees apart from one another. Inother words, angle α and angle β are each approximately 90 degrees.Encoder sensors 23 a and 23 c are used as described above to generate acorrected speed count TC and encoder sensor 23 b may be used tocalculate a corrected position count ΦC using Equation 1 or Equation 3.

The values used to calculate the corrected position count ΦC are shownmore clearly in FIG. 7. The horizontal and vertical axes shown in FIG. 7are the same as shown in FIG. 6. Thus, the left vertical axis representsspeed count values, the right vertical axis represents position countvalues, and the horizontal axis represents a complete motor shaft (andencoder wheel 22) revolution. As shown in FIG. 7 and in Equation 2above, TError is expressed as the instantaneous (e.g., at arbitrary timet) difference between the speed count T2 and the corrected speed countTC. Further, the corrected speed count TC is derived from the average ofspeed counts T1 and T3 as discussed above. Similarly, ΦError is theinstantaneous (also at arbitrary time t) difference between the positioncount Φ1 and the sought-after corrected position count ΦC. Therefore,Equation 3 may be rewritten as:

$\begin{matrix}{\frac{{\Phi \; 1} - {\Phi \; C}}{{T\; 2} - \frac{{T\; 1} + {T\; 3}}{2}} = \frac{N}{2\pi}} & \left( {{Eq}.\mspace{14mu} 4} \right)\end{matrix}$

Solving Equation 4 for ΦC yields:

$\begin{matrix}{{\Phi \; C} = {{\Phi \; 1} - {\frac{N}{2\pi} \times \left( {{T\; 2} - \frac{{T\; 1} + {T\; 3}}{2}} \right)}}} & \left( {{Eq}.\mspace{14mu} 5} \right)\end{matrix}$

which may be used by position counter 30 to continually determine acorrected position count value ΦC. Referring to FIG. 1, this positioncount value ΦC may be transmitted to position controller 38 to effectposition control of the motor 20. Since the position counter 30 in thepresent embodiment uses speed counts T1, T2, and T3 to calculate thecorrected position count ΦC, these counts may be provided by the speedcounter 34 along signal path 56. Alternatively, the position counter 30may independently count these values. Alternatively, the speed counter34 and the position counter 30 may be implemented as a single countercapable of forwarding the appropriate corrected speed count TC andposition count ΦC to the speed controller 40 and position controller 38,respectively.

A second approach to determining a corrected position count value ΦC issimilar to the averaging solution described above for calculating acorrected speed count TC. This particular approach uses a second commandsignal 131 as shown in FIG. 8. In this particular embodiment, the sametwo encoder sensors 23 a, 23 c used to determine the corrected speedcount TC may be used to determine the corrected position count ΦC.Alternatively, two different encoder sensors may be used, resulting in atotal of four encoder sensors disposed about the encoder wheel 22 (twofor position, two for speed).

A technique for setting the periodic command pulses 33 at or near themidpoint of a pulse train period was disclosed above. This sametechnique may be applied to the second command signal 131 to set theperiodic command pulses 133 at or near the midpoint of a period of pulsetrain 24 c. Then, at any given point in time, the corrected positioncount ΦC may be calculated from the average of the position counts Φ1,Φ3 shown in FIG. 8.

Where encoder eccentricity is minimal, the two command signals 31, 131may be started at practically any time without any adverse effects.However, as eccentricity increases, the timing and method with which thecommand signals 31, 131 are started may effect the range ofeccentricities that may be corrected using this approach. To highlightthese considerations, two different starting strategies are discussedbelow. In one embodiment, the command signals 31, 131 are started atdifferent times, with the second command signal 131 started after thefirst signal is locked to encoder sensor 23 a. In another embodiment,the command signals 31, 131 are started at substantially the same time.In both cases, no additional logic or processing is used to control thetiming of the command signals 31, 131, though some control may in factbe used. Thus, the following examples are intended to represent worstcase scenarios.

In a first initialization strategy, the position controller 38 isinitially locked to sensor pulse trains 24 a. That is, the commandpulses 33 are set to fire approximately halfway through each period ofpulse train 24 a. The motor controller 12 controls the positionvariation of sensor 23 a to zero as represented by error curve 58 inFIG. 9 a, which shows the uncorrected absolute position variation due toeccentricity for both encoder sensors 23 a, 23 c. Since error curve 58is maintained at or near zero, the error curve 60 of sensor 23 c showstwice the amplitude of the true encoder eccentricity. Thus, theuncorrected sensor 23 c variation varies between −50% to +50% of onecomplete period due to an encoder eccentricity of 25% for thisparticular example.

In the present example, the second command signal 131 is started atabout the 75% point on the horizontal axis of FIG. 9 a, or when theposition variation error curve 60 is at its largest negative value(point 62). Initially, the position count Φ3 relative to the second setof command pulses 133 varies between 0% and 100% and the DC value wouldbe 50%. Once the controller 12 reaches a steady state condition, theamplitudes of the two individual position counts Φ1, Φ3 become equal at25% and the DC value of each individual position counts Φ1, Φ3 shifts by25% so that the corrected position measurement has an average value of0%. Thus, in FIG. 9 b, position count Φ1 has settled to a DC value of−25% while Φ3 has settled to a DC value of +25%. The average of thesetwo position counts Φ1, Φ3 is shown as the corrected position count ΦC.

In the present example, an encoder eccentricity of 25% temporarilyresulted in a position count Φ3 variation that fluctuated between 0% and100%. Thus, a 25% eccentricity represents an upper limit on the amountof eccentricity that may be corrected using this particularinitialization strategy. A larger eccentricity will produce largerposition count Φ3 variations that will manifest themselves astransitions between leading and lagging rising edges of pulse train 24 crelative to the command pulses 133. As discussed above, thesetransitions may lead to an unstable motor control 12 loop. Of course, ifthe second command signal 131 were started at the midpoint (point 64) ofthe absolute position error signal 60 shown in FIG. 9 a, then the finalindividual position counts Φ1, Φ3 would both vary about zero and no DCoffset would be present. Logic or processor instructions may be used tocontrol the precise initialization of the command signal 131. In theabsence of this type of control, the worst case scenario shown in FIGS.9 a and 9 b must be accounted for.

In a second initialization strategy, the position controller 38 is notlocked onto either pulse train 24 a, 24 c. In this particular case, bothcommand signals 31, 131 are started at approximately the same time andboth are used to correct encoder eccentricity. FIG. 10 a shows thisparticular scenario with an encoder 21 having an eccentricity of 50% ofone total period. That is, the eccentricity for the encoder 21 in FIGS.10 a, 10 b is twice that of the encoder 21 in FIGS. 9 a, 9 b. Withneither position count Φ1, Φ3 corrected, the absolute uncorrectedposition variation 60, 62 due to encoder eccentricity is the sameamplitude for each sensor 23 a, 23 c and 180 electrical degrees out ofphase.

In the present example, the command signals 31, 131 are started at aboutthe 75% point on the horizontal axis of FIG. 10 a, or when the positionvariation error curve 62 is at its largest positive value (point 66).Initially, the position count Φ1 relative to the first set of commandpulses 33 varies between 0% and −100% and the DC value would be −50%.Also, the initial position count Φ3 relative to the second set ofcommand pulses 133 varies between 0% and 100% with a DC value of 50%.Once the controller 12 reaches a steady state condition, the amplitudesof the two individual position counts Φ1, Φ3 become equal at 50%, butthe initial DC value of each individual position count Φ1, Φ3 remains sothat the corrected position measurement has an average value of 0%.Thus, in FIG. 10 b, position count Φ1 remains at a DC value of −50%while Φ3 remains at a DC value of +50%. The average of these twoposition counts Φ1, Φ3 is shown as the corrected position count ΦC. Aswith the previous initialization strategy, the DC offsets may beminimized if the command signals 31, 131 are started closer to thezero-axis crossing (point 68).

In the present example, an encoder eccentricity of 50% temporarilyresulted in position count Φ1, Φ3 variations that fluctuated between 0%and 100%. Thus, a 50% eccentricity represents an upper limit on theamount of eccentricity that may be corrected using this particularinitialization strategy. As before, logic or processor instructions maybe used to control the precise initialization of the command signals 31,131. In the absence of this type of control, the worst case scenarioshown in FIGS. 10 a and 10 b must be accounted for.

The present invention may be carried out in other specific ways thanthose herein set forth without departing from the scope and essentialcharacteristics of the invention. For instance, the signals representedby Φ1 and T2 in Equation 5 may be changed as necessary to other countsignals that are in phase alignment with one another. Thus, applicationof the encoder correction technique provided by Equation 5 is notexpressly limited to encoders sensors 23 a, 23 b that are 90 motor shaftdegrees apart. Encoder sensors at any angle may be used provided thespeed and position count signals are in phase. Furthermore, where thecorrected position ΦC is calculated using Equation 5, the N/2π term inthat equation may be rounded to the nearest power of 2 so thecalculation may be performed using a bit-shift operation in an ASIC orother computer processor. The present embodiments are, therefore, to beconsidered in all respects as illustrative and not restrictive, and allchanges coming within the meaning and equivalency range of the appendedclaims are intended to be embraced therein.

1-21. (canceled)
 22. An apparatus comprising: a motor having an encoderdisc operatively coupled thereto, the encoder disc rotating inconjunction with the motor; a first encoder sensor disposed at a firstcircumferential position about the encoder disc, the first encodersensor generating a first pulse train indicative of the speed of theencoder disc; a second encoder sensor disposed at a secondcircumferential position about the encoder disc, the secondcircumferential position being different than the first circumferentialposition, the second encoder sensor generating a second pulse trainindicative of the speed of the encoder disc; a clock generator operativeto generate a periodic clock signal having a frequency greater than thefirst and second pulse trains; and a controller operative to generate aplurality of sampling points, the controller further operative tocalculate a corrected position count based upon a number of cycles ofthe periodic clock signal that elapse between one of the plurality ofsampling points and a transition of the first pulse train.
 23. Theapparatus of claim 22 wherein the controller is further operative tocalculate a corrected speed count based at least partly upon an averageof a number of cycles of the periodic clock signal that elapse per cycleof the first and the second pulse trains.
 24. The apparatus of claim 23wherein the first encoder sensor and the second encoder sensor aredisposed substantially 180 encoder disc degrees apart from one another.25. The apparatus of claim 22 wherein the controller is furtheroperative to generate a plurality of second sampling points, thecontroller further operative to calculate the corrected position countbased at least partly on an average of: the number of cycles of theperiodic clock signal that elapse between one of the plurality ofsampling points and the transition of the first pulse train, and anumber of cycles of the periodic clock signal that elapse between one ofthe plurality of second sampling points and a transition of the secondpulse train.
 26. The apparatus of claim 25 wherein the first encodersensor and the second encoder sensor are disposed substantially 180encoder disc degrees apart from one another.
 27. The apparatus of claim22 further comprising a third encoder sensor disposed at a thirdcircumferential position about the encoder disc, the third encodergenerating a third pulse train indicative of the speed of the motor. 28.The apparatus of claim 27 wherein the controller is further operative tocalculate the corrected position count based at least partly on a numberof cycles of the periodic clock signal that elapse per cycle of thefirst, second, and third pulse trains.
 29. The apparatus of claim 28wherein the first encoder sensor and the second encoder sensor disposedsubstantially 180 encoder disc degrees apart from one another and thethird encoder sensor is disposed to lag the first encoder sensor andlead the second encoder sensor by substantially 90 encoder disc degrees.30. The apparatus of claim 22 wherein the encoder disc is operativelycoupled to a photosensitive unit.
 31. An apparatus, comprising: a motor;an encoder operatively coupled to the motor; a first encoder sensorassociated with the encoder, the first encoder sensor generating a firstpulse train indicative of the speed of the encoder disc; a clockgenerator operative to generate a periodic clock signal having afrequency greater than a frequency of the first pulse train; and acontroller operative to generate a plurality of sampling points, thecontroller further operative to calculate a corrected position countbased upon a number of cycles of the periodic clock signal that elapsebetween one of the plurality of sampling points and a transition of thefirst pulse train, and adjusting a speed of the motor based upon thecorrected position count.
 32. The apparatus of claim 31, furthercomprising: a second encoder sensor associated with the encoder andpositioned relative to the first encoder sensor, the second encodersensor generating a second pulse train indicative of the speed of theencoder disc; wherein the controller calculates a corrected speed countby averaging a first speed count and a second speed count, the firstspeed count and the second speed count determined by counting a numberof cycles of the clock signal that elapse per cycle of pulse trainsreceived from first and second encoder sensors, respectively, adjuststhe speed of the encoder and maintains a substantially constant valuefor the corrected speed count to effect speed control.
 33. The apparatusof claim 32, wherein the corrected position count is calculated based atleast partly upon a ratio of a position count error and speed counterror, the position count error being relative to the number of cyclesof the periodic clock signal that elapse between the one of the samplingpoints and the transition of the first pulse train and the speed counterror being relative to the corrected speed count.
 34. The apparatus ofclaim 31, further comprising a second encoder sensor disposed at acircumferential position about the encoder that is different from acircumferential position of the first encoder sensor, the second encodersensor generating a second pulse train indicative of the speed of theencoder disc, wherein the controller is operative to generate aplurality of second sampling points and calculate the corrected positioncount based upon a number of cycles of the clock signal that elapsebetween a second sampling point and a transition of the second pulsetrain.
 35. The apparatus of claim 34, wherein the first and secondencoder sensors are disposed on the encoder substantially 180 rotarydegrees apart from one another.
 36. The apparatus of claim 34, furthercomprising a third encoder sensor associated with the encoder anddisposed relative to the first and second encoder sensors, the thirdencoder sensor generating a third pulse train indicative of the speed ofthe encoder disc, wherein the controller calculates the correctedposition count based on number of cycles of the clock signal that elapseper cycle of the first, second and third pulse trains.
 37. An apparatus,comprising: a motor; an encoder operatively coupled to the motor; afirst encoder sensor associated with the encoder, the first encodersensor generating a first pulse train indicative of the speed of theencoder disc; a second encoder sensor associated with the encoder andpositioned relative to the first encoder sensor, the second encodersensor generating a second pulse train indicative of the speed of theencoder disc; a clock generator operative to generate a periodic clocksignal having a frequency greater than a frequency of the first andsecond pulse trains; and a controller operative to determine a firstspeed count and a second speed count by counting a number of clockcycles that elapse per cycle of the first and second pulse trains,respectively, to determine a first position count by counting a numberof clock cycles that elapse between a periodic command pulse and atransition of the first pulse train, to calculate a corrected speedcount based upon the fist and second speed counts, to calculate acorrected position count based on the first position count, and toadjust a speed of the motor based upon the corrected speed count and thecorrected position count.
 38. The apparatus of claim 37, wherein thecontroller further calculates a second position count by counting anumber of clock cycles that elapse between a second periodic commandpulse and a transition of the second pulse train, wherein the correctedposition count is calculated based upon the second position count.